﻿Imports BUS
Imports DAO
Imports DTO

Public Class FormThemKhachHang

    Public cmnd As String

#Region "xử lý nút thoát"
    Private Sub ButtonThoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonThoat.Click
        Me.Close()
    End Sub
#End Region

#Region "Sự kiện load form"

    Private Sub FormThemKhachHang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
#End Region

#Region "Kiểm tra dữ liệu"

    Public Function KT_DT(ByVal sdt As String) As Boolean
        If (sdt.Length <> 10) Then
            Return False
        End If
        Dim i As Integer
        For i = 0 To 1
            If (IsNumeric(sdt(i)) = False) Then
                Return False
            End If
        Next
        If (sdt(3) <> "-" And (IsNumeric(sdt(3)) = False)) Then
            Return False
        End If
        For i = 4 To 9
            If (IsNumeric(sdt(i)) = False) Then
                Return False
            End If
        Next

        Return True

    End Function


    Public Function KT_Email(ByVal Email As String) As Boolean

        Dim Arr() As String = Email.Split("@")
        If (Arr.Length <> 2) Then
            Return False
        End If

        Dim mang1 As String = Arr(0).ToString()

        Dim mang2 As String = Arr(1).ToString()

        If (mang1.Length = 0) Then
            Return False
        End If
        Dim i As Integer
        For i = 0 To mang1.Length - 1
            If ((Char.IsLetter(mang1(i)) = False) And (Char.IsDigit(mang1(i))) = False) Then
                Return False
            End If
        Next

        Dim Arr1() As String = mang2.Split(".")
        If (Arr1.Length <> 2) Then
            Return False
        End If

        Dim day1 As String = Arr1(0).ToString()
        Dim day2 As String = Arr1(1).ToString()

        If (day1.Length = 0 Or day2.Length = 0) Then
            Return False
        End If


        For i = 0 To day1.Length - 1

            If (Char.IsLetter(day1(i)) = False) Then
                Return False
            End If
        Next

        For i = 0 To day2.Length - 1
            If (Char.IsLetter(day2(i)) = False) Then
                Return False
            End If
        Next

        Return True
    End Function


    Private Function KiemTraHoTen(ByVal hoten As String) As Boolean

        If (hoten.Length = 0) Then
            Return False
        End If

        If ((hoten(0)) = " " Or (hoten(hoten.Length - 1)) = " ") Then
            Return False
        End If
        If (hoten.IndexOf("  ") > -1) Then
            Return False
        End If

        If (Char.IsUpper(hoten(0)) = False) Then
            Return False
        End If
        Dim i As Integer
        For i = 1 To hoten.Length - 2
            If ((hoten(i)) = " " And (Char.IsUpper(hoten(i + 1))) = False) Then
                Return False
            End If
        Next
        Return True
    End Function

    Public Function KiemTra() As Integer
        Dim flag As Integer = 1
        If (KiemTraHoTen(TextBoxTen.Text) = False) Then
            MessageBox.Show("Tên khách hàng không hợp lệ", "Thông báo")
            flag = 0
            TextBoxTen.Focus()

        ElseIf (TextBoxDiaChi.Text = "") Then
            MessageBox.Show("Địa chỉ không được để trống", "Thông báo")
            flag = 0
            TextBoxDiaChi.Focus()

        ElseIf (KT_DT(TextBoxDienThoai.Text) = False) Then
            MessageBox.Show("Điện thoại không hợp lệ,phải có dạng XX-XXXXXXX hoặc phải nhập đủ 10 số", "Thông báo")
            flag = 0
            TextBoxDienThoai.Focus()

        ElseIf (KT_Email(TextBoxEmail.Text) = False) Then
            MessageBox.Show("Email không hợp lệ", "Thông báo")
            flag = 0
            TextBoxEmail.Focus()
        ElseIf (TextBoxCMND.Text = "" Or TextBoxCMND.Text.Length <> 9 Or IsNumeric(TextBoxCMND.Text) = False) Then
            MessageBox.Show("CMND không hợp lệ", "Thông báo")
            flag = 0
            TextBoxCMND.Focus()
        End If
        Return flag
    End Function


#End Region

#Region "Xử lý nút thêm khách hàng"
    Private Sub ButtonThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonThem.Click
        If KiemTra() = 1 Then
            Dim kh As New KhachHang_DTO(TextBoxTen.Text, TextBoxDiaChi.Text, TextBoxDienThoai.Text, TextBoxEmail.Text, TextBoxCMND.Text, 0, 1)
            If (KhachHang_BUS.ThemKhachHang(kh) > 0) Then
                ListBoxDSKH.Items.Add(kh.TenKH)
                MessageBox.Show("Thêm Khách Hàng thành công", "Thông báo")
                cmnd = TextBoxCMND.Text
                Clear()
            Else
                MessageBox.Show("Khách Hàng này đã đăng ký", "Thông báo")
            End If
        End If
    End Sub
#End Region

#Region "Xóa dữ liệu trong cac control"
    Public Sub Clear()
        TextBoxTen.Clear()
        TextBoxDiaChi.Clear()
        TextBoxDienThoai.Clear()
        TextBoxEmail.Clear()
        TextBoxCMND.Clear()
    End Sub
#End Region
End Class